1. Field of the Invention
The present invention relates to an image forming apparatus, an image forming method, and a storage medium.
2. Description of the Related Art
In recent years, an image forming apparatus such as a printer has been offering duplex printing, i.e., printing on both sides of a sheet of paper to save paper resources.
One such known image forming apparatus performs automatic duplex printing in which a sheet of paper is automatically reversed in the image forming apparatus so that printing is automatically performed on both sides of the sheet, in page order.
Another known image forming apparatus allows manual duplex printing, in which sheets with one side printed with images on odd-numbered pages of print data are sequentially discharged onto a paper output tray and, after the images on the odd-numbered pages have been printed, the discharged sheets are manually moved to a paper feed tray or a manual feed tray so that the other side of the sheets is printed with images on even-numbered pages of the print data in response to a print instruction.
In one conventional example, automatic duplex printing is performed by sending print data written in a PDL (Page Description Language) from a host device to the image forming apparatus; generating image data to be rendered based on the print data; individually managing the image data as duplex printing information that associates first and second pages of the image data with the front and back sides of a printing medium such as a sheet of paper; exchanging page information that defines attributes of the duplex printing information between an information management unit and an image forming unit to control duplex printing; transmitting the duplex printing information on the first or second page of the image data from an information processing device to the image forming apparatus according to the page information; and forming an image based on the duplex printing information with the image forming unit.
In another conventional example, automatic duplex printing is performed by alternating between printing on the front side of a plurality of sheets and printing on the back side of the plurality of sheets based on received print data, and a command that specifies the end of duplex printing is added to the end of the print data of documents for duplex printing. Upon detection of this command, the sheets present in the printer are discharged and the duplex printing ends.
However, as described above, the conventional techniques only allow duplex printing based on the duplex printing information associating first and second pages of image data with the front and back sides of a sheet, or use the command specifying the end of duplex printing to discharge the sheets present in the printer. The conventional techniques are not available to achieve intended duplex printing by replacing or deleting rendering data rendered on a rendering frame in a memory, and therefore need to be improved.
Specifically, to obtain desirable printing results by printing with rendering data rendered on a plurality of rendering frames that are simultaneously created in a memory, processing such as replacing the rendering data or deleting the rendering data on some of the rendering frames to print the remaining rendering data may be needed. However, the rendering data rendered on the rendering frame in the memory cannot be processed by the conventional techniques.
Conventionally, rendering frames are processed for the front and back sides of a sheet in the order in which the rendering frames are created. In addition, when a plurality of rendering frames is present in the memory, the rendering data on a rendering frame for a first page cannot be individually deleted insofar as the rendering data can only be deleted in order from the last page to the first page. Therefore, in this case, a user needs to delete the rendering data on all of the rendering frames, resend print data according to intended printing conditions, and render rendering data on the rendering frames in the memory again, which is inconvenient for the user.
Specifically, in conventional duplex printing using a common page description language, two rendering frames are created, i.e. a first frame for the front side and a second frame for the back side, and print data are converted into rendering data and sequentially rendered on the first and second frames. Such processing of creating frames and rendering data is repeated. The processing is basically as follows: generate rendering data for the front side; create a frame for the front side; render the rendering data for the front side; print; generate rendering data for the back side; create a frame for the back side; render the rendering data for the back side; and print, thereby completing duplex printing on one sheet.
To have the front side blank in the conventional duplex printing using a common page description language, the processing is performed as follows: generate rendering data for the front side (blank); create a frame for the front side; render the rendering data for the front side (blank); print; generate rendering data for the back side; create a frame for the back side; render the rendering data for the back side; and print, thereby completing duplex printing on one sheet.
Accordingly, printing on a sheet is appropriately performed in order of front and back sides when print data are sent in order of page data for the front side and then page data for the back side.
As described above, rendering data are normally rendered in order of transmission of print data. Duplex printing is controlled by typical page description languages so that the data for the front side are always rendered on the first created frame and the data for the back side are always rendered on the second created frame, i.e., the frames for rendering the data are always fixed at the start of printing.
However, some particular page description languages may specify duplex printing and not specify the front and back sides at the start of printing (start of rendering data). Such page description languages may determine the front and back sides or specify movement of the rendering data upon completion of data rendering for the front and back sides in the above-described processing. In this case, the front and back sides are determined after rendering data and intended printing may be in reverse order to transmission of the print data.
The conventional techniques do not support printing with a first created frame for the back side, i.e., printing only on the back side in duplex printing. Specifically, for example, when a first created frame is for the back side, the first frame is changed to a frame for the front side and printed on one side of a sheet, i.e., the first duplex printing is changed to simplex printing. Then, duplex printing is performed with a second created frame, which is created for the front side of the originally first duplex printing.
However, when a third created frame is for the front side for the originally second duplex printing, the second created frame, which has the rendering data for the front side for duplex printing and waits for the frame for the back side to perform duplex printing, is printed on one side of a sheet by changing duplex printing to simplex printing.
When the third created frame is for the back side for the originally second duplex printing, the third created frame is used for the back side of the second created frame, which has the rendering data for the front side for duplex printing and waits for the frame for the back side. In either case, the printing result is different from what is intended.
In addition, the page description language may perform printing by canceling rendering data for the front side and changing rendering data for the back side to rendering data for the front side upon completion of data rendering for the front and back sides in the above-described processing. In this case, with the conventional techniques, it is impossible to delete only the rendering data on the first frame and print only the rendering data on the second frame, and thereby intended printing cannot be performed.
Further, the page description language may perform printing only with rendering data for the back side by canceling rendering data for the front side upon completion of data rendering for the front and back sides in the above-described processing. Also, in this case, with the conventional techniques, it is impossible to delete only the rendering data on the first frame and print only the rendering data on the second frame, and thereby intended printing cannot be performed.
Still further, in printing only on the back side with the front side blank, dummy data are rendered on the first frame as rendering data for the front side. In this case, transmission of the dummy data with a page description language requires processing such as data transmission and data analysis, thereby decreasing throughput during printing. In addition, when the page description language does not support data or a command for creating dummy data, data rendering for the back side is performed without rendering blank data for the front side on the first frame, which may cause inappropriate duplex printing.